	Extensions systmes sur le TRAP #10
	***********************************


	Supposons qu'avec ces trois lignes:

	move.l #buffer,a0
	move.l #$3130000a,d0
	trap #10

	vous puissiez tramer en 216 couleurs une image True Color, que de
manire aussi rapide vous puissiez lancer un Timer, grer du son, etc...
En bref, accder  de nouveaux outils avec un protocole encore plus simple
que celui de l'AES/VDI: c'est le but de l'extension TRAP #10.


Philosophie
-----------

	Il s'agit de fournir au programmeur une base d'outils de
programmation qui lui vitent de r-inventer la roue  chacun de ses
programmes. Vous me direz que chaque programmeur a ses propres
bibliothques... oui, mais avec ce systme chacun pourra disposer
galement de la bibliothque des autres! C'est ainsi que la meilleure
routine de tramage, si elle est diffuse ainsi, pourra profiter  tous. Il
en va de mme pour toutes les autres petites mthodes (tris, traitements
de sons, calculs sur des rels sans copro, etc...).

Principe
--------

	Les routines s'installent sur le Trap #10 (du nom de l'instruction
assembleur qui permet d'y basculer) par l'intermdiaire d'un Gestionnaire
que je fournis: TRAP_10.PRG  loger dans le dossier AUTO. Ensuite, en
quelques octets de code, vous ou tout autre programme pouvez accder 
ce nouvel outil.
	Le gestionnaire supporte jusqu' 256 routines qui, elles-mmes,
supportent jusqu' 256 sous-fonctions chacune. La fonction 0 correspond au
gestionnaire, les 255 autres sont programmables  souhait.
	Il va de soi que si vous n'enregistrez pas votre fonction par mon
intermdiaire, nous aurons vite de nombreux conflits. Ma page WEB sera un
lieu idal pour la diffusion des outils et des syntaxes des nouveaux
appels. Les pages de ST mag devraient aussi permettre un suivi de
leurs dveloppements.
	Pour appeler une routine, voici la mthode:

	En entre:
	A0: pointe sur un tableau de paramtres variant selon la fonction
	D0: valeur cl + numro de fonction (yy) et de sous fonction (xx)

	move.l #...,a0
	move.l #$3130xxyy,d0
	trap #10

	En retour:
	d0=LONG 10: Ok
	d0='NULL': fonction inexistante
	d0='UNKN': sous-fonction inconnue

	La valeur D0 contient dans le mot suprieur $3130='10' comme cl.
Si cette valeur n'est pas rencontre, alors la routine saute au Trap #10
prcdemment install. Ainsi, ce systme n'est pas bloquant pour les
installations antrieures  TRAP_10.PRG.
	Le mot infrieur contient deux informations: yy=numro de fonction
(de 0  255) et xx=numro de sous-fonction (de 0  255).

Le Gestionnaire
---------------

	Il comprend pour l'instant 3 appels (sous-fonctions 0,1 et 2):

	00/00=demande d'infos
	*********************
		move.l #zone,a0
		move.l #$31300000,d0
		trap #10

		retour: d0=10
			zone=LONG version (ex='1.00')
			zone+4=LONG adresse table 256 pointeurs

	00/01=installer une fonction
	****************************
		entre: zone=WORD numero de fonction dsir
			zone+2=LONG adresse de la routine (finie par RTS)

		move.l #zone,a0
		move.l #$31300100,d0
		trap #10

		retour: d0=10 alors fonction installe
			d0=-1 fonction dj occupe!!!

	00/02=dsinstaller une fonction
	*******************************
		entre: zone=WORD numro de fonction  librer

		move.l #zone,a0
		move.l #$31300200,d0
		trap #10

		retour: d0=10 alors ok, fonction dsinstalle
			d0=-2 emplacement dj libre!!!

	Voil de quoi installer vos propres outils et en faire profiter
les autres programmeurs.

Fonctions dj implantes
-------------------------

	Fonction 10: tramage 216 couleurs
	*********************************

	Sur la fonction 10 j'ai implant des routines de tramage 216
couleurs avec 3 sous-fonctions selon le type d'image source:

	en entre:
	zone:   LONG adresse image source
		LONG adresse image dest
		WORD largeur
		WORD hauteur
		LONG adresse palette retour

	move.l #zone,a0
	move.l #$3130xx0a,d0
	trap #10

	xx=00, l'image source est en 24 bits R,V,B
	xx=01, l'image source est en 15 bits Intel (VVVBBBBB xRRRRRVV)
	xx=02, l'image source est en 16 bits Falcon (RRRRRVVV VVVBBBBB)

	En retour l'image dest contient les indexs de couleur (0  215) et
la palette contient 648 octets (216 fois trois octets R,V,B).

Fonctions prvues
-----------------

	Je compte aussi ajouter le tramage monochrome, les transformations
mode Atari (plans entrelacs) vers mode cartes graphiques (octets) ainsi
qu'un appel permettant de lancer  la frquence voulue n'importe quel
timer du MFP ST ou du MFP TT: en effet, cette machine dispose d'un second
MFP qui apporte 4 timers supplmentaires!

Cool...
-------

	Ce systme l'est en effet. Il vite toute gestion de modules, de
mmoire, son protocole est archi-simple, le nombre d'octets ncessaires
pour l'accs  un outils est ridicule (remplissage du tableau + 14 octets
pour l'appel), il est gratuit.

...mais limit
--------------

	Ce systme l'est aussi. Il doit se rduire  une srie de petits
programmes peu gourmands en mmoire: en effet, les routines sont
rsidentes! Cependant, rien ne vous empche de choisir les outils que vous
dsirez installer sur votre systme.


Appel  tous
------------

	Vous avez une bonne ide gratuite? Faites-en profiter les autres.
Votre fonction sera ajoute  celles disponibles avec vos coordonnes pour
qu'on puisse vous contacter en cas de problme ou simplement pour "causer"
entre programmeurs dans la mme branche.
	Pour vous guider, je pense que des routines graphiques, des
routines de gestion (stats, divers tris), des routines trs systmes
(gestion des interruptions, chrono, etc...), des routines sonores (travail
sur un chantillon, capture ou restitution d'un son en RAM) seraient les
bienvenues.

	Pour obtenir TRAP_10.PRG, il suffit de m'crire (avec une
disquette et une enveloppe timbre pour le retour). Vous recevrez
galement le source assembleur d'un exemple de fonction qu'on ajoute au
Trap #10. Ce dernier pourra tre utilis comme point de dpart  vos
propres ralisations.
	J'espre aussi pouvoir fournir un fichier OBJET directement linkable
en "C" amenant l'appel suivant:

	retour=TRAP_10(fn,sub_fn,zone)

	WORD fn,sub_fn
	LONG retour
	LONG zone


	A vos claviers! Depuis le nombre inattendu de demandes du FORTH,
je sais qu'il y a encore pas mal de programmeurs sur Atari: Ecrivez-moi,
recevez TRAP_10.PRG et augmentez le nombre d'outils! Chacun est comptant
dans un domaine, autant que tous en profitent,

        Guillaume TELLO
        240 rue Estienvrin
        49260 Montreuil-Bellay
        gtello@wanadoo.fr